const express =require('express');
const app =express();
const router =express.Router();
const User = require('../../models/User');

var bcrypt =require('bcryptjs');
var gravatar=require('gravatar');
var jwt =require('jsonwebtoken');
const key=require('../../config/keys');
const passport=require('passport');
const { urlencoded } = require('body-parser');



router.get('/',(req,res)=>{
    res.json({msg:"这是个测试数据"})
})

//处理注册信息的内容
router.post('/register',(req,res)=>{
    console.log(req.body);
    User.findOne({email:req.body.email}).then(user=>{
        console.log(user);
     
        if(user){
            return res.status(400).json('该邮箱已经被注册了！')
        }else{
            //设置用户注册后显示的图片
            var avatar=gravatar.url('emerleite@gmail.com',{s:'200',r:'pg',d:'404'})
            //实例化，保存新的对象
            const newUser=new User({
                name:req.body.name,
                email:req.body.email,
                avatar,
                password:req.body.password,
                identity:req.body.identity
            })
            bcrypt.genSalt(10,function(err,salt){
                bcrypt.hash(newUser.password,salt,function(err,hash){
                    if(err) throw err
                    newUser.password=hash;
                    newUser.save().then(user=>{
                        res.json(user)
                    }).catch(err=>console.log(err))
                })
            })
        }

        
    })
})
//处理登陆的内容
router.post('/login',(req,res)=>{
    console.log(req.body);
    const email =req.body.email;
    const password =req.body.password;
    User.findOne({email}).then(user=>{
        if(!user){
            //没有该用户时不进行匹配；
            return res.status(400).json("用户不存在")
            
        }
        //有该用户时候，我需要来进行匹配
        bcrypt.compare(password,user.password).then(isMatch=>{
            if(isMatch){
                const rule={
                    id:user.id,
                    name:user.name,
                    avatar:user.avatar,
                    identity:user.identity
                }
                //token :令牌
                //参数：规则，加密名字，{对象，比如过期时间}，回调
                jwt.sign(rule,key.secretorKey,{expiresIn:3600},(err,token)=>{
                    if(err){throw err}
                    //匹配成功返回密钥
                    res.json({
                        success:true,
                        token:'Bearer '+token
                    })
                })
            }else{
                //true email 存在 密码匹配错误
                return res.status(400).json('密码匹配错误')
            }
        })
    })
})

module.exports=router;